package controllers;

import play.*;
import play.db.DB;
import play.db.jpa.JPA;
import play.mvc.*;

import java.util.*;

import models.*;

public class Application extends Controller {

	@Before(unless={"login","validarLogin"})
    static void checkAuthentification() {
        if(session.get("usuario") == null) login();
    }
	
    public static void index() {
    	// model => http://www.playframework.org/documentation/1.2.1/cheatsheet/model
    	// guia ataul = http://www.playframework.org/documentation/1.1.1/guide2
    	// http://www.guj.com.br/java/56232-mapeamento-hibernate-annotation
    	Logger.info("Aplicação iniciada!");
    	/*
    	 if(session.get("usuario") == null){
    		 login();
    		 //render();
    		return;
    	 }
    	 */
    	 
    	List<String> papeis = pegarPapeis(session.get("usuario"));
    	
        render(papeis);
    }
    public static void login() {
    	String mensagem = null;
    	render(mensagem);

    }
    public static void login(String mensagem) {
    	render(mensagem);
    }
    public static void logout() {
    	session.clear();
    	login();
    	
    }
    public static List pegarPapeis(String nome) {
    	List<Pessoa> pessoas = Pessoa.find("nome", nome).fetch();
		Pessoa pessoa = pessoas.get(0);
		Long pessoaId =  pessoa.id;
		List<PessoaPapeis> pessoaPapeis = PessoaPapeis.find("pessoa_id", pessoaId).fetch();
		List<String> papeisDescricao = new ArrayList<String>();
		for(int x=0; x<pessoaPapeis.size(); x++) {
			
			papeisDescricao.add(pessoaPapeis.get(x).papel.descricao.toString());
		}
    	return papeisDescricao;
    	
    }
    
    public static void validarLogin(String loginNome,  String loginSenha) {
    	String adminSenha = null;
    	String adminUser = null;
    	List<Pessoa> pessoas = Pessoa.find("nome", loginNome).fetch();
    	if(pessoas.size()>0) {
    		adminUser = pessoas.get(0).nome;
    		adminSenha = pessoas.get(0).senha;
	    	boolean logado=false;
	    	if(loginSenha.equals(adminSenha) && loginNome.equals(adminUser)) {
	    		session.put("usuario", loginNome);
	    		logado = true;
	    		// renderArgs.put("pessoaPapeis", pessoaPapeis);
	    		// renderArgs.put("pessoa", pessoa);
	    		index();
	    	} else {
	    		login("Senha nao confere");
	    	}
    	} else {
    		login("Usuario nao existe");
    	}
    	//render(logado);
    }
    
    
    public static void receberForm(String nomeCompleto, String nome, String email, String cpf, String senha, String senhaRepetida) {
    	
    	String sql = "insert into Pessoa (nomeCompleto, nome, senha,email, cpf) values ('"+nomeCompleto+"', '"+nome+"', '"+senha+"', '"+email+"', '"+cpf+"' )";
    	boolean query = DB.execute(sql);
    	
		
    	Logger.info("Cadastrando novo usuário!");
    	//Pessoa usuario = new Pessoa( nomeCompleto, nome, senha,email, cpf);
    	//usuario.save();
       render();
    }
    public static void testarAjax(String nome, String email) {
    	
    	render(nome, email);
    	
    }
    public static void tutorial() {
    	
    	render();
    	
    }
    

}